"Status Objects" can function as "Title Screens", Menus, and other In-game
displays. They contain several parts that work together to create interactive
and/or informative visuals:

-"Sprite Sets" are lists of images that can be used in the display of an object

-"Texts" are text strings that can be printed on-screen, or used for other purposes

-"Objects" contain references to Sprites or Text, and keep track of where and
 how to display them. Their type, position, contents, and properties can all be
 changed by "Functions"

-"Counters" are used in "Functions" for timing, delay, and to keep track of how
 many "Objects" or "Windows" are currently flagged to move

-"Selections" aren't visible, but contain information on what functions to call
 when certain keys are pressed while any given Selection is "Active". It also
 calls a function when Activated or Deactivated, which can be used to visually
 signal that fact in such ways as changing/moving a Sprite or Text

-"Windows" can be used to group objects together for movement or order of display,
 and to cut Sprites or Texts at it's boundaries. They can also behave as if they
 are a Selection, and can hold Selections to keep them separated from other groups.
 Their properties can be changed by "Functions"

-"Functions" are used to tell all of the above items, or other parts of the game,
 how to behave. The very first function (ID 0) is always activated as soon as the
 "Script Object" is created in-play. The rest are called at the
 Selection/Deselection of any "Selection" or "Window", or when the currently
 selected Selection/Window's keypress events are satisfied. They may also call on
 each other. Because the use of "Functions" isn't limited to "Status Scripts", and
 because there are many things they can do, they are documented separately

The script files contain the following data in order:

-Notes
 
	The "Notes" field may contain any text to describe the file.


-Number of Counters

        This is the number of "Counters" the game should create for this object

-Number of Nested Ifs

	This is the maximum number of "If" conditional statements that can appear
	within another in this script's "Functions"

-Number of Simultaneous Functions

	This is the maximum number of functions that can be active at the same
	time in this object

-Default Window

	This is the ID number of the "Window" that should be "Active" when this
	object is created. It may be any scripted "Window" or either of the
	special ones, which are always created:

	255- "Main Window". It is always the size of the screen, and it's
	      Viewpoint never moves
	254- "Level Window". It is always the size of the screen, and it's
	      Viewpoint follows the level "Camera"

-Number of Windows

	The should be the number of user-created windows listed directly below
	this line

	Each user-created "Window" should be listed at this point, following
	this format:


	-Parent Win

		This references the "Window" that this "Window" itself occupies.
		If it is not inside another user-created "Window", it must be in
		either the "Main Window" or the "Level Window"

	-X
	-Y

		X and Y Position of this "Window" as related to it's parent's
		"Viewpoint". If it's Parent is "Main Window", this is it's
		actual on-screen position

	-X1
	-Y1
	-X2
	-Y2

		Left-most, upper-most, right-most, and lower-most borders of this
                "Window" as related to it's own "Viewpoint". This determines what
		parts of "Objects" contained in this "Window" are visible depending
		on their own X and Y position

	-Default Visibility

		0- This "Window" is not visible when the "Script Object" is spawned
                1- This "Window" is visible when the "Script Object" is spawned

		Note: A "Window" that is not visible overrides the visibility of the
		"Objects" and "Windows" it contains. If it is not visible, they will
		not be visible

	-Default Selection

		Each "Selection" is given a parent "Window" so that they may be
		put into separate groups. When this "Window" is selected for the
		first time, this "Selection" will become the active one

	-Select Func

		This is the function that will be called when this "Window" is
		selected. If no function is desired, this value can be any
		number that does not correspond with a "Function" listed in
		this script

	-Deselect Func

		This is the function that will be called when this "Window" is
		deselected. If no function is desired, this value can be any
		number that does not correspond with a "Function" listed in
		this script

	-Num Events

		This value should be the number of "keypress events" to check
		for while this "Window" is active. They function as with
		"Selections", and are listed as follows:

		-Num Sets

			There may be more than one set of keys that trigger
			the same event. This value states how many will be
			listed, and each set is listed as follows:

			-Num Keys

				This is the number of keys that must be
				activated at the same time to trigger this
				event. It's keys are listed below:

				-Keycode

					This is the ID value of the desired
					key's position in the key state table

		-Function

			This value represents the ID number of the function to
			call if the keys listed in any of this Event's key
			sets have been pressed

-Number Of Texts

	This value should be the number of Text Strings that will be listed in
	this "Status Object"

	Each text string should be listed at this point:

	-Text

		Any text that should be displayed at any time or used for file
		loading purposes can appear on these lines. Linebreaks (enter
		keypresses) are not allowed within any string, as they signify
		the end of the string itself

-Number of Sprite Sets

	This value represents the number of "Sprite Sets" that should be loaded
	for this "Status Object". A "Sprite Set" is a grouping of one or more
        "Sprites" (still images) that somehow relate to each other, possibly
	by animation

	Each "Sprite Set" is listed at this point, and follows this format:

	-Number Of Sprites

		This value signifies how many sprites must be loaded into this
		set. Each sprite is listed below, and follows this format:

		-FileName

			This is the name of the file that contains the image
			that should be loaded for this "Sprite". If the file
			is not in the same folder as the script file that
			references it, it's path must be included with it's
			name. This path must be "relative", meaning that it
			must show how to get to the art file from the path
			that contains the "Status Object" script, not how to
			find it from the "Root Directory"

		-XOff Grab
		-YOff Grab

			These are the X and Y positions of the top-left corner
			of the desired image in it's art file

		-Width
		-Height

			These are the width and height of the image that should
			be copied into this "Sprite"

-Number of Selections

	This value states the number of "Selections" that will be created for
	this "Status Object"

	Each selection is listed at this point in the following way:

	-Select Func

		This is the function that will be called when this "Selection"
		is selected. If no function is desired, this value can be any
		number that does not correspond with a "Function" listed in
		this script

	-Deselect Func

		This is the function that will be called when this "Selection"
		is deselected. If no function is desired, this value can be
		any number that does not correspond with a "Function" listed
		in this script

	-Num Events

		This value should be the number of "keypress events" to check
		for while this "Selection" is active. They function as with
		"Windows", and are listed as follows:

		-Num Sets

			There may be more than one set of keys that trigger
			the same event. This value states how many will be
			listed, and each set is listed as follows:

			-Num Keys

				This is the number of keys that must be
				activated at the same time to trigger this
				event. It's keys are listed below:

				-Keycode

					This is the ID value of the desired
					key's position in the key state table

		-Function

			This value represents the ID number of the function to
			call if the keys listed in any of this Event's key
			sets have been pressed

-Number of Objects

	This is the number of "Objects" that should be created for this
	"Status Script".

	Each "Object" is listed at this point, however, there are different
	types, and some are listed differently than others:

        0- Script Sprite
		
		A "Script Sprite" type object displays a sprite from a Status
		Script's "Sprite" listing. If an Animation is assigned to it,
		the animation will control which of the sprites from the given
		"Set" ID to display. If no valid Animation is given, the
		"Frame" value will determine which to draw. "Animations" in this
		case are "Functions" from the current Script

        1- Object Sprite
		
		An "Object Sprite" type object displays a sprite from the Game
		Object listing's "Sprite" listing. If an Animation is assigned to
		it, the animation will control which of the sprites from the given
		"Set" ID to display. If no valid Animation is given, the "Frame"
		value will determine which to draw. "Animations" in this case are
		"Animations" from the Game Object listing

        2- Player Sprite
		
		A "Player Sprite" type object displays a sprite from any of the
		Player Characters' "Sprite" listing. If an Animation is assigned to
		it, the animation will control which of the sprites from the given
		"Set" ID to display. If no valid Animation is given, the "Frame"
		value will determine which to draw. "Animations" in this case are
		"Animations" from the given Player Character Script

        6- Script Text

		The "Script Text" type object displays a text string from a Status
		Script "Text" listing		
		
        7- Level  Text
		
		The "Level Text" type object displays a text string from the
		Game/Zone "Text" listing		
		
        8- Register Text (Space Fill)
		
		This type of object displays the value of the selected "Register".
		It may be "padded" at the front with spaces for up to 10 digits
		
        9- Register Text (Zero Fill)

		This type of object displays the value of the selected "Register".
		It may be "padded" at the front with zeros for up to 10 digits

	Object type 0 listing:

		-Type

			The first thing to be listed is the type of "Object"

		-Script

			An "Object" may call on content from any currently
			loaded "Status Object" script. If it requires content
			from it's own script, this value will be 255.
			Otherwise, this value will be the ID number of the
			desired script, which is determined by the order
			that they are loaded in. "Global", or "Game", scripts
			can be referenced by placing a "G" directly in front
			of the value, as in "G1". "Zone" or "Act" scripts may
			be called similarly by using "Z" or "A" respectively,
			however, the "A" label may only be used if the current
			script is being loaded as either "Zone" or "Act"
			because the number of "Zone" scripts is unknown while
			loading "Game" scripts, so the actual ID of the desired
			"Act" script cannot be calculated

		-Object ID

			This is the ID number of the desired Sprite in the
			Sprite Listing of the Status Script given by this
			Object's "Script" value. (If that value is 255, this
			value represents the ID of a Sprite in this Script)

                -Animation

			Any sprite may be assigned an "Animation" to control how
			it is displayed. If no "Animation" is desired, the text "None"
			should be used. An "Animation" for this type of object is
			the ID of a "Function" from the Status Script referenced by
			this object's "Script" value. (If that value is 255, the
			"Animation" would be a "Function" from this Script)

		-Visible by Default

			0- This "Object" is not visible when the "Script Object"
			   is spawned
			1- This "Object" is visible when the "Script Object" is
			   spawned

		-Default Window

			Each object must be assigned a "Window" that it resides
			in when it is created. It can be any user-created "Window"
			in the current script, or either of the special windows.
			It may also be moved to a different "Window" later by
			a "Function"

		-Start XOff
		-Start YOff

			These are the X and Y positions (relative to the viewpoint
			of this "Object"'s Parent "Window") at which the object
			will be placed when it is created

	Object type 1 listing:

		-Type

			The first thing to be listed is the type of "Object"

		-Object ID

			This is the ID number of the desired Sprite in the
			Game Object sprite listing. "Global", or "Game", Sprites
			can be referenced by placing a "G" directly in front
			of the value, as in "G1". "Zone" or "Act" Sprites may
			be called similarly by using "Z" or "A" respectively,
			however, the "A" label may only be used if the current
			Script is being loaded as either "Zone" or "Act"
			because the number of "Zone" Sprites is unknown while
			loading "Game" Scripts, so the actual ID of the desired
			"Act" Sprite cannot be calculated

                -Animation

			Any sprite may be assigned an "Animation" to control how
			it is displayed. If no "Animation" is desired, the text "None"
			should be used. An "Animation" for this type of object is
			the ID of an "Animation" from the Game Object "Animation" set.
			The "G", "A", and "Z" tags may be used here in the same way as
			with the "Object ID"

		-Visible by Default

			0- This "Object" is not visible when the "Script Object"
			   is spawned
			1- This "Object" is visible when the "Script Object" is
			   spawned

		-Default Window

			Each object must be assigned a "Window" that it resides
			in when it is created. It can be any user-created "Window"
			in the current script, or either of the special windows.
			It may also be moved to a different "Window" later by
			a "Function"

		-Start XOff
		-Start YOff

			These are the X and Y positions (relative to the viewpoint
			of this "Object"'s Parent "Window") at which the object
			will be placed when it is created

	Object type 2 listing:

		-Type

			The first thing to be listed is the type of "Object"

		-Character ID

			This is the ID number of the Character Script that
			contains the desired Sprite listing

                -Animation ID

			Any sprite may be assigned an "Animation" to control how
			it is displayed. If no "Animation" is desired, the text "None"
			should be used. An "Animation" for this type of object is
			the ID of an "Animation" from the Character Script who's ID
			is given by the above value.

		-Visible by Default

			0- This "Object" is not visible when the "Script Object"
			   is spawned
			1- This "Object" is visible when the "Script Object" is
			   spawned

		-Default Window

			Each object must be assigned a "Window" that it resides
			in when it is created. It can be any user-created "Window"
			in the current script, or either of the special windows.
			It may also be moved to a different "Window" later by
			a "Function"

		-Start XOff
		-Start YOff

			These are the X and Y positions (relative to the viewpoint
			of this "Object"'s Parent "Window") at which the object
			will be placed when it is created

	Object type 6 listing:

		-Type

			The first thing to be listed is the type of "Object"

		-Script

			An "Object" may call on content from any currently
			loaded "Status Object" script. If it requires content
			from it's own script, this value will be 255.
			Otherwise, this value will be the ID number of the
			desired script, which is determined by the order
			that they are loaded in. "Global", or "Game", scripts
			can be referenced by placing a "G" directly in front
			of the value, as in "G1". "Zone" or "Act" scripts may
			be called similarly by using "Z" or "A" respectively,
			however, the "A" label may only be used if the current
			script is being loaded as either "Zone" or "Act"
			because the number of "Zone" scripts is unknown while
			loading "Game" scripts, so the actual ID of the desired
			"Act" script cannot be calculated

		-Object ID

			This is the ID number of the desired Text String in the
			Text Listing of the Status Script given by this Object's
			"Script" value. (If that value is 255, this value
			represents the ID of a Text String in this Script)

		-Font ID

			This is ID of the Font that is used to display the text
			when the object is created. It may be changed later by
			a "Function". The "G" "Z" and "A" labels may also be used
			as with the "Script" entry, with the same restrictions

		-Visible by Default

			0- This "Object" is not visible when the "Script Object"
			   is spawned
			1- This "Object" is visible when the "Script Object" is
			   spawned

		-Default Window

			Each object must be assigned a "Window" that it resides
			in when it is created. It can be any user-created "Window"
			in the current script, or either of the special windows.
			It may also be moved to a different "Window" later by
			a "Function"

		-Start XOff
		-Start YOff

			These are the X and Y positions (relative to the viewpoint
			of this "Object"'s Parent "Window") at which the object
			will be placed when it is created

	Object type 7 listing:

		-Type

			The first thing to be listed is the type of "Object"

		-Object ID

			This is the ID number of the desired Text String in the
			Game/Zone Text listings. "Global", or "Game", Texts
			can be referenced by placing a "G" directly in front
			of the value, as in "G1". "Zone" Texts may be called
			similarly by using "Z". There are no "Act" Text Strings
			because they would be loaded at "Zone" load time anyway

		-Font ID

			This is ID of the Font that is used to display the text
			when the object is created. It may be changed later by
			a "Function". The "G" "Z" and "A" labels may also be used
			as with the "Script" entry in a type 6 Object, with the
			same restrictions

		-Visible by Default

			0- This "Object" is not visible when the "Script Object"
			   is spawned
			1- This "Object" is visible when the "Script Object" is
			   spawned

		-Default Window

			Each object must be assigned a "Window" that it resides
			in when it is created. It can be any user-created "Window"
			in the current script, or either of the special windows.
			It may also be moved to a different "Window" later by
			a "Function"

		-Start XOff
		-Start YOff

			These are the X and Y positions (relative to the viewpoint
			of this "Object"'s Parent "Window") at which the object
			will be placed when it is created

	Object types 8 and 9 listing:

		-Type

			The first thing to be listed is the type of "Object"

		-Num of Digits

			The value of the "Register" may be displayed with up
			to 10 digits of space. This value may be anything from
			1 to 10, and any digits not used by the value will be
			padded with either spaces or 0's (depending on it's type).
			A value of "1" with 3 digits would appear as "  1" or "001",
			or a value of "65" would appear as " 65" or "065". This is
			good for giving changing numbers a fixed amount of space,
			however, "1 digit" will not pad the number with spaces or
			zeros, and will allow it to take up as much space as necesary
			to display it, which will vary as it gains or loses digits


		-Hex/Dec Flag

			0- The value will be displayed in Decimal form

			1- The value will be displayed in Hex form

		-Register ID

			This is the ID number of the "Register" who's value should
			be displayed. Placing a "U" in front of this value, such as
			"U2" signifies a user-created "Register". Not using the "U"
			tag signifies a Game "Register", values used directly by
			the game such as the current "Act" ID, the current Screen
			Mode, the "Camera" position, etc.

		-Font ID

			This is ID of the Font that is used to display the text
			when the object is created. It may be changed later by
			a "Function". The "G" "Z" and "A" labels may also be used
			as with the "Script" entry, with the same restrictions

		-Visible by Default

			0- This "Object" is not visible when the "Script Object"
			   is spawned
			1- This "Object" is visible when the "Script Object" is
			   spawned

		-Default Window

			Each object must be assigned a "Window" that it resides
			in when it is created. It can be any user-created "Window"
			in the current script, or either of the special windows.
			It may also be moved to a different "Window" later by
			a "Function"

		-Start XOff
		-Start YOff

			These are the X and Y positions (relative to the viewpoint
			of this "Object"'s Parent "Window") at which the object
			will be placed when it is created

-Number of Functions

	This value is the number of "Functions" that this script contains. The
	"Functions" themselves appear immediately below this line

-EOF-

	It is a good idea to place this line at the bottom of each file, so that
	it is ensured that there is a linebreak after the last line